"""
@author: xxw
@file: 02.装饰器带参数.py
@time: 2023/6/12 16:17
"""
# 自身不传入参数的装饰器，使用两层函数定义
# 自身传入参数的装饰器，使用三层函数定义

import time

user = {"root": "123456", "admin": "admin123"}

def deco(username,passwd):
    def runtime(func):
        def inner(*args, **kwargs):
            if username in user and passwd == user.get(username):
                if username == "root":
                    print(f"装饰器带参数:{username}")
                    start = time.time()
                    result = func(*args,**kwargs)
                    end = time.time()
                    print(f"{func.__name__}执行花了{end-start}s")
                    return result
                else:
                    print("只有root用户具有权限")
            else:
                print("用户名或密码错误")
        return inner
    return runtime





# 使用装饰器带参数，来验证用户是否有权限运行函数


# add函数添加权限认证装饰器
# 判断一：用户名和密码是否正确，不正确 --提示用户名或密码错误，不能执行add函数
# 判断二：用户名是否为root，只有root用户有权限  --不正确--输出用户没有权限
# 用户名和密码，通过带参数的装饰器传入

@deco(username="admin",passwd="admin123")
def add(a, b):
    return a+b
print(add(12,2))
